package com.tbit.main.dao.log;

import com.tbit.main.pojo.PowerChangeLog;
import com.tbit.main.pojo.PowerChangeLogSta;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 换电记录
 *
 * @author Leon
 * 2019年11月12日 下午4:44:13
 */
public interface PowerChangeLogDao {
    /**
     * 添加
     *
     * @param powerChangeLog
     */
    Integer insert(PowerChangeLog powerChangeLog);

    /**
     * 按时间分组统计
     *
     * @param params
     * @return
     */
    List<PowerChangeLogSta> groupByTime(Map<String, Object> params);

    /**
     * 根据时间统计
     *
     * @param params
     * @return
     */
    List<PowerChangeLog> getByTime(Map<String, Object> params);

    /**
     * 根据时间统计
     *
     * @param params
     * @return
     */
    List<PowerChangeLog> getByTimeBatteryNO(Map<String, Object> params);


    /**
     * 根据运营区域时间统计综合
     *
     * @param params
     * @return
     */
    Integer getByAccountIdTime(Map<String, Object> params);

    /**
     * 根据分区时间统计综合
     *
     * @param params
     * @return
     */
    Integer getByRegionIdTime(Map<String, Object> params);

    /**
     * 根据运营区域按天分组
     *
     * @param params
     * @return
     */
    List<Map<String, Object>> getGroupByDay(Map<String, Object> params);

    /**
     * 根据分区按天分组
     *
     * @param params
     * @return
     */
    List<Map<String, Object>> getRegionIdGroupByDay(Map<String, Object> params);

    /**
     * 统计前一天的数据
     *
     * @return
     */
    Map<String, Object> statYesterdayOrder(Map<String, Object> params);

    /**
     * 统计前一天的数据
     *
     * @return
     */
    Map<String, Object> statRegionIdYesterdayOrder(Map<String, Object> params);

    /**
     * 根据ids查询
     *
     * @param powerChangeLogIds
     * @return
     */
    List<PowerChangeLog> getPowerChangeLogIds(@Param("powerChangeLogIds") String powerChangeLogIds);

    /**
     * 根据ids查询
     *
     * @param powerChangeLogId
     * @return
     */
    PowerChangeLog getPowerChangeLogId(Integer powerChangeLogId);

    /**
     * 更新换电记录
     *
     * @param params
     */
    void update(Map<String, Object> params);

    /**
     * 根据车辆和时间查询
     *
     * @param map
     * @return
     */
    List<PowerChangeLog> getByMachineIdTime(Map<String, Object> map);

    /**
     * 更新换电记录
     *
     * @param powerChangeLog
     */
    void updatePcl(PowerChangeLog powerChangeLog);

    /**
     * 根据车辆id查询7天内最后有效换电记录
     *
     * @param machineId 车辆id
     */
    PowerChangeLog selectLast7DayFirstValid(Integer machineId);

}